// src/utils/request.js
import axios from 'axios';
import store from '../store/index.js';

const service = axios.create({
    // baseURL: 'http://localhost:8888', // 请求后端地址
    // baseURL: 'dev-api', // 请求后端地址
    timeout: 10000,// 请求超时时间
    // withCredentials: true, // 如果后端通过 cookies 验证 token，需启用
    withCredentials: false, // 如果后端通过 cookies 验证 token，需启用
    headers: {
        'Content-Type': 'application/json', // 默认使用 JSON
    },
});

// 请求拦截器
service.interceptors.request.use(
    config => {
        // const token = this.$store.state.token;
        const token = store.state.token;
        if (token && typeof token === 'string') {
            config.headers['token'] = `${token}`;
        } else {
            console.warn('Vuex 仓库中未找到有效 token');
        }

        // 如果是FormData，删除Content-Type让浏览器自动设置
        if (config.data instanceof FormData) {
            delete config.headers['Content-Type'];
        } else if (!config.headers['Content-Type']) {
            config.headers['Content-Type'] = 'application/json';
        }
        return config;
    },
    error => {
        console.error('请求拦截器错误:', error);
        return Promise.reject(error);
    }
);

// // 响应拦截器
service.interceptors.response.use(
    response => {
        return response.data; // 直接返回 response.data
    },
    error => {
        if (error.response && error.response.status === 401) {
            // 未授权，触发重新登录
            console.error('未授权，重定向到登录页');
        }
        console.error('Response error:', error.response || error);
        return Promise.reject(error);
    }
);

export default service;
